package tv.athena.live.api.report

import android.content.Context
import com.yy.liveplatform.proto.nano.LpfAudit

import tv.athena.live.base.arch.IComponentApi

interface ReportApi : IComponentApi {

    /**
     * 举报
     *
     * @param reportedUid 被举报人的用户ID
     * @param auditType   送审类型如下：
     * AuditType.AUDIO_REPORT 音频举报;
     * AuditType.LIVE_REPORT 视频举报;
     * AuditType.AUDIO_AND_LIVE_REPORT 音视频举报;
     * @param businessIllegalType  业务自定义内容违规类型，该类型中台不会做任何处理，最后会透传回给业务服务器，类型由业务自己定义
     * @param listener 举报结果回调
     * @param ext 业务扩透传字段
     */
    fun report(context: Context,
               reportedUid: Long,
               auditType: AuditType,
               businessIllegalType: Int,
               listener: OnReportListener,
               ext: String = "")

    enum class AuditType(val value: Int) {
        AUDIO_REPORT(LpfAudit.AUDIO_REPORT),
        LIVE_REPORT(LpfAudit.LIVE_REPORT),
        AUDIO_AND_LIVE_REPORT(LpfAudit.AUDIO_AND_LIVE_REPORT)
    }

    interface OnReportListener {
        /**
         * 举报成功回调
         * @param data 服务器返回的秩序信息
         */
        fun onSuccess(data: String)

        /**
         * 举报失败错误回调
         * @param code 失败错误码
         * @param  msg 错误详情
         */
        fun onFailed(code: Int, msg: String)
    }
}
